home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src / minizip / ioapi.c < prev    next >
C/C++ Source or Header  |  2005-09-24  |  4KB  |  197 lines

  1. /* ioapi.c -- IO base function header for compress/uncompress .zip
  2.    files using zlib + zip or unzip API
  3.  
  4.    Version 1.00, September 10th, 2003
  5.  
  6.    Copyright (C) 1998-2003 Gilles Vollant
  7. */
  8.  
  9. #ifndef _WIN32_WCE
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #else
  13. #include <stdio.h>
  14. //#include "celib.h"
  15. #endif
  16. #include <string.h>
  17.  
  18. #include "zlib.h"
  19. #include "ioapi.h"
  20.  
  21.  
  22.  
  23. /* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */
  24.  
  25. #ifndef SEEK_CUR
  26. #define SEEK_CUR    1
  27. #endif
  28.  
  29. #ifndef SEEK_END
  30. #define SEEK_END    2
  31. #endif
  32.  
  33. #ifndef SEEK_SET
  34. #define SEEK_SET    0
  35. #endif
  36.  
  37. voidpf ZCALLBACK fopen_file_func OF((
  38.    voidpf opaque,
  39.    const char* filename,
  40.    int mode));
  41.  
  42. uLong ZCALLBACK fread_file_func OF((
  43.    voidpf opaque,
  44.    voidpf stream,
  45.    void* buf,
  46.    uLong size));
  47.  
  48. uLong ZCALLBACK fwrite_file_func OF((
  49.    voidpf opaque,
  50.    voidpf stream,
  51.    const void* buf,
  52.    uLong size));
  53.  
  54. long ZCALLBACK ftell_file_func OF((
  55.    voidpf opaque,
  56.    voidpf stream));
  57.  
  58. long ZCALLBACK fseek_file_func OF((
  59.    voidpf opaque,
  60.    voidpf stream,
  61.    uLong offset,
  62.    int origin));
  63.  
  64. int ZCALLBACK fflush_file_func OF((
  65.    voidpf opaque,
  66.    voidpf stream));
  67.  
  68. int ZCALLBACK fclose_file_func OF((
  69.    voidpf opaque,
  70.    voidpf stream));
  71.  
  72. int ZCALLBACK ferror_file_func OF((
  73.    voidpf opaque,
  74.    voidpf stream));
  75.  
  76.  
  77. voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)
  78.    voidpf opaque;
  79.    const char* filename;
  80.    int mode;
  81. {
  82.     FILE* file = NULL;
  83.     const char* mode_fopen = NULL;
  84.     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
  85.         mode_fopen = "rb";
  86.     else
  87.     if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
  88.         mode_fopen = "r+b";
  89.     else
  90.     if (mode & ZLIB_FILEFUNC_MODE_CREATE)
  91.         mode_fopen = "wb";
  92.  
  93.     if ((filename!=NULL) && (mode_fopen != NULL))
  94.         file = fopen(filename, mode_fopen);
  95.     return file;
  96. }
  97.  
  98.  
  99. uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)
  100.    voidpf opaque;
  101.    voidpf stream;
  102.    void* buf;
  103.    uLong size;
  104. {
  105.     uLong ret;
  106.     ret = fread(buf, 1, (size_t)size, (FILE *)stream);
  107.     return ret;
  108. }
  109.  
  110.  
  111. uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size)
  112.    voidpf opaque;
  113.    voidpf stream;
  114.    const void* buf;
  115.    uLong size;
  116. {
  117.     uLong ret;
  118.     ret = fwrite(buf, 1, (size_t)size, (FILE *)stream);
  119.     return ret;
  120. }
  121.  
  122. long ZCALLBACK ftell_file_func (opaque, stream)
  123.    voidpf opaque;
  124.    voidpf stream;
  125. {
  126.     long ret;
  127.     ret = ftell((FILE *)stream);
  128.     return ret;
  129. }
  130.  
  131. long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)
  132.    voidpf opaque;
  133.    voidpf stream;
  134.    uLong offset;
  135.    int origin;
  136. {
  137.     int fseek_origin=0;
  138.     long ret;
  139.     switch (origin)
  140.     {
  141.     case ZLIB_FILEFUNC_SEEK_CUR :
  142.         fseek_origin = SEEK_CUR;
  143.         break;
  144.     case ZLIB_FILEFUNC_SEEK_END :
  145.         fseek_origin = SEEK_END;
  146.         break;
  147.     case ZLIB_FILEFUNC_SEEK_SET :
  148.         fseek_origin = SEEK_SET;
  149.         break;
  150.     default: return -1;
  151.     }
  152.     ret = 0;
  153.     fseek((FILE *)stream, offset, fseek_origin);
  154.     return ret;
  155. }
  156.  
  157. int ZCALLBACK fflush_file_func (opaque, stream)
  158.    voidpf opaque;
  159.    voidpf stream;
  160. {
  161.     int ret;
  162.     ret = fflush((FILE *)stream);
  163.     return ret;
  164. }
  165.  
  166. int ZCALLBACK fclose_file_func (opaque, stream)
  167.    voidpf opaque;
  168.    voidpf stream;
  169. {
  170.     int ret;
  171.     ret = fclose((FILE *)stream);
  172.     return ret;
  173. }
  174.  
  175. int ZCALLBACK ferror_file_func (opaque, stream)
  176.    voidpf opaque;
  177.    voidpf stream;
  178. {
  179.     int ret;
  180.     ret = ferror((FILE *)stream);
  181.     return ret;
  182. }
  183.  
  184. void fill_fopen_filefunc (pzlib_filefunc_def)
  185.   zlib_filefunc_def* pzlib_filefunc_def;
  186. {
  187.     pzlib_filefunc_def->zopen_file = fopen_file_func;
  188.     pzlib_filefunc_def->zread_file = fread_file_func;
  189.     pzlib_filefunc_def->zwrite_file = fwrite_file_func;
  190.     pzlib_filefunc_def->ztell_file = ftell_file_func;
  191.     pzlib_filefunc_def->zseek_file = fseek_file_func;
  192.     pzlib_filefunc_def->zflush_file = fflush_file_func;
  193.     pzlib_filefunc_def->zclose_file = fclose_file_func;
  194.     pzlib_filefunc_def->zerror_file = ferror_file_func;
  195.     pzlib_filefunc_def->opaque = NULL;
  196. }
  197.